package com.weixx.rabbitmqSpringBoot.service;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.UUID;

/**
 * @Auther weixx
 * @Date 2022/2/27
 */
@Service
public class OrderService {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 模拟用户下单
     * @param userid
     * @param productid
     * @param num
     */
    public void makeOrder(String userid,String productid,int num){
        //根据商品id查询库存是否充足
        //保存订单
        String orderId= UUID.randomUUID().toString();
        System.out.println("订单生成成功"+orderId);
        //通过消息队列MQ来完成消息的分发

        //参数1：交换机  参赛2：路由key/queue队列名称  参数3：消息内容
        String exchangeName="fanout_order_exchange";
        String routingKey="";
        rabbitTemplate.convertAndSend(exchangeName,routingKey,orderId);

    }

    /**
     * direct模式
     * @param userid
     * @param productid
     * @param num
     */
    public void makeOrderDirect(String userid,String productid,int num){
        //根据商品id查询库存是否充足
        //保存订单
        String orderId= UUID.randomUUID().toString();
        System.out.println("订单生成成功"+orderId);
        //通过消息队列MQ来完成消息的分发

        //参数1：交换机  参赛2：路由key/queue队列名称  参数3：消息内容
        String exchangeName="direct_order_exchange";
        String[] routingKey={"duianxin","email"};
        for (String s : routingKey) {
            rabbitTemplate.convertAndSend(exchangeName,s,orderId);
        }


    }


    /**
     * topic模式
     * @param userid
     * @param productid
     * @param num
     */
    public void makeOrderTopic(String userid,String productid,int num){
        //根据商品id查询库存是否充足
        //保存订单
        String orderId= UUID.randomUUID().toString();
        System.out.println("订单生成成功"+orderId);
        //通过消息队列MQ来完成消息的分发

        //参数1：交换机  参赛2：路由key/queue队列名称  参数3：消息内容
        String exchangeName="topic_order_exchange";
        /*
        #.duanxin.#
        #.email.#
        #.sms.#
         */
        String[] routingKey={"duanxin","email"};
        for (String s : routingKey) {
            rabbitTemplate.convertAndSend(exchangeName,s,orderId);
        }


    }

}
